﻿var _dungLuongToiDa = 10485760;
var _chuDungLuongToiDa = "10MB";

//Dùng để lưu khung soạn
var $khungSoanBaiViet;

//Biến dùng để kiếm tra công việc đang xử lý
var dangDangBaiViet = false;

$(function () {
    //Khởi tạo trang
    khoiTao();

    //Lấy các bài viết của khóa học
    layBaiViet();
})

function khoiTao() {
    $('#duong-dan-soan-bai-giang').on('click', function () { truotToi(this) });
    $khungSoanBaiViet = $('#soan-bai-giang');
    $khungSoanBaiViet.find('.attach-file-button-container').on('click', function () {
        dangTapTin();
    });
    $khungSoanBaiViet.find('.attach-file').on('change', function () {
        tapTinThayDoi();
    })
    $khungSoanBaiViet.find('.cancel-attach-file').on('click', function () {
        huyDangTapTin();
    });

    $khungSoanBaiViet.find('.show-file-button').on('click', function () {
        layTapTin(this);
    });

    $('.compose').on('submit', function () {
        dangBaiViet();
    });
}

function truotToi(object) {
    //Kéo đến vị trí
    window.scrollTo(0, $(object.getAttribute('data-focus')).offset().top - window.outerHeight / 10);

    //Trỏ
    $(object.getAttribute('data-focus')).focus();
}

//Lấy bài viết
function layBaiViet() {
    _ajax(
        '/BaiViet/KhoaHoc_Nhom_BaiGiang_BaiViet',
        { ma: maKhoaHoc, tu: 1, den: -1 },
        'POST',
        'json',
        function (data) {
            if (data.trangThai == 'OK') {
                layBaiVietThanhCong(data.ketQua);
            }
            else {
                thongBaoLoi(data.trangThai);
            }
        },
        thongBaoLoi,
        'bai-giang-tieu-de',
        'Bài giảng - Lấy bài viết'
    );
}

function layBaiVietThanhCong(html) {
    $('#bai-giang-bai-viet').html(khoiTaoXuLyBaiViet($(html)));
}


//Đăng bài viết
function dangBaiViet() {
    window.event.preventDefault();
    if (dangDangBaiViet) {
        return;
    }

    if (!kiemTraThongTin()) {
        return;
    }
    var form = window.event.srcElement;

    dangDangBaiViet = true;
    _ajaxForm(
        form.action,
        new FormData(form),
        'POST',
        'json',
        form.enctype,
        false,
        false,
        false,
        function (data) {
            if (data.trangThai == 'OK') {
                dangBaiThanhCong(data.ketQua);
            }
            else {
                thongBaoLoi(data.trangThai);
            }
        },
        thongBaoLoi,
        'dau-hieu-tai',
        'Bài giảng - Đăng bài viết thất bại'
    );
    form.reset();
    $('#viet-bai').editable("setHTML", "");
    $(form).find('.cancel-attach-file').removeClass('show');
    $(form).find('.text-attach-file').text("Thêm tập tin");
}

function kiemTraThongTin() {
    if ($khungSoanBaiViet.find('.title-editor')[0].value == "") {
        alert('Nhập tiêu đề');
        return false;
    }
    if ($khungSoanBaiViet.find('.f-placeholder').length > 0) {
        alert('Nhập nội dung');
        return false;
    }
    return true;
}

function dangBaiThanhCong(html) {
    $('#bai-giang-bai-viet').append(khoiTaoXuLyBaiViet($(html)));
    dangDangBaiViet = false;
}

function khoiTaoXuLyBaiViet(html) {
    $(html.find('.article-content-container')[0]).parent().addClass('expand');
    html.find('.article-title').click(function () {
        $(this).parent().toggleClass('expand');
    });
    html.find('.show-file-button').on('click', function () {
        layTapTin(this);
    });


    //Lấy mã bài viết của bài viết được khởi tạo
    var maBaiViet = (html.find('.ma-bai-viet').length != 0) ? html.find('.ma-bai-viet')[0].value : 0;

    if (maBaiViet != 0) {
        html.find('.xoa-bai-viet').on('click', function () {
            window.event.preventDefault();
            if (!confirm('Bạn có chắc là muốn xóa?')) {
                return;
            }
            var element = this;
            _ajax(
                this.href,
                null,
                'POST',
                'text',
                function (data) {
                    if (data == 'OK') {
                        $(element).parents('.article').remove();
                    }
                    else {
                        thongBaoLoi(data);
                    }
                },
                thongBaoLoi,
                'dau-hieu-tai',
                'Bài giảng - Xóa bài viết'
            );
        });
        html.find('.tang-thu-tu').on('click', function () {
            window.event.preventDefault();
            var element = this;
            _ajax(
                element.href,
                null,
                'POST',
                'text',
                function (data) {
                    if (data == 'OK') {
                        var object = $(element).parents('.article');
                        object.insertAfter(object.next());
                    }
                    else {
                        thongBaoLoi(data);
                    }
                },
                thongBaoLoi,
                'dau-hieu-tai',
                'Bài giảng - Tăng thứ tự'
            )
        });
        html.find('.giam-thu-tu').on('click', function () {
            window.event.preventDefault();
            var element = this;
            _ajax(
                element.href,
                null,
                'POST',
                'text',
                function (data) {
                    if (data == 'OK') {
                        var object = $(element).parents('.article');
                        object.insertBefore(object.prev());
                    }
                    else {
                        thongBaoLoi(data);
                    }
                },
                thongBaoLoi,
                'dau-hieu-tai',
                'Bài giảng - Giảm thứ tự'
            )
        });
        html.find('.sua-bai-viet').on('click', function () {
            window.event.preventDefault();

            var $object = $(this);

            var $container = $(window.event.srcElement).parents('.article');
            var $tieuDe = $($container.find('.tieu-de'));
            var $noiDung = $($container.find('.noi-dung'));

            $noiDung.editable({
                inlineMode: true,
                buttons: ['bold', 'italic', 'underline', 'fontSize', 'color', 'align', 'formatBlock', 'insertOrderedList', 'insertUnorderedList', 'createLink', 'insertImage'],
                zIndex: 3,
                theme: 'gray',
                blockTags: ['p', 'pre', 'blockquote'],
                placeholder: 'Viết bài...'
            });

            var bienTamSuaBai = [
                $tieuDe.find('span').html(),
                $noiDung.editable('getHTML')
            ];

            $object.hide();

            $tieuDe.hide();
            var $tieuDeEditor = $('<input class="title-editor" placeholder="Tiêu đề..." value="' + bienTamSuaBai[0] + '" />');
            $tieuDe.after($tieuDeEditor);

            $buttonContainer = $('<div class="post-button-container"><div class="nut-sua"><i class="pe-7s-check"></i><input type="button" value="Sửa" class="post-button" /></div><div class="nut-huy"><i class="pe-7s-close-circle"></i><input type="button" value="Hủy" class="post-button" /></div></div>');

            $buttonContainer.find('.nut-huy').on('click', function () {
                $object.show();
                $tieuDe.find('span').html(bienTamSuaBai[0]);
                $tieuDe.show();
                $tieuDe.next().remove();
                $noiDung.editable('destroy');
                $noiDung.html(bienTamSuaBai[1]);
                $noiDung.next().remove();

                delete $object;
                delete $tieuDe;
                delete $noiDung;
            });
            $buttonContainer.find('.nut-sua').on('click', function () {
                _ajax(
                    '/BaiViet/SuaBaiViet',
                    { maBaiViet: maBaiViet, tieuDe: $tieuDeEditor.val(), noiDung: $noiDung.editable('getHTML') },
                    'POST',
                    'text',
                    function (data) {
                        if (data == 'OK') {
                            $object.show();
                            $tieuDe.find('span').html($tieuDeEditor.val());
                            $tieuDe.show();
                            $tieuDe.next().remove();
                            $noiDung.editable('destroy');
                            $noiDung.next().remove();

                            delete $object;
                            delete $tieuDe;
                            delete $noiDung;
                        }
                        else {
                            thongBaoLoi(data);
                        }
                    },
                    thongBaoLoi,
                    'dau-hieu-tai',
                    'Bài giảng - Sửa bài viết'
                );
            });
            $noiDung.after($buttonContainer);
        });
    };
    return html;
}

//Lấy tập tin
function layTapTin(object) {
    window.event.preventDefault();
    _ajax(
        object.getAttribute('href'),
        null,
        'post',
        'json',
        function (data) {
            if (data.trangThai == 'OK') {
                $(object).parent().html(data.ketQua);
            }
            else {
                thongBaoLoi(data.trangThai);
            }
        },
        thongBaoLoi,
        $(object).find('span').attr('id'),
        'Bài giảng - Lấy tập tin'
    )
}

//Xử lý đăng nhập tin
function dangTapTin() {
    $khungSoanBaiViet.find('.attach-file')[0].click();
}
function tapTinThayDoi() {
    var file = $khungSoanBaiViet.find('.attach-file')[0].files[0];
    if (file.size > _dungLuongToiDa) {
        alert('Tập tin đính kèm không thể vượt quá ' + _chuDungLuongToiDa);
    }
    else {
        $khungSoanBaiViet.find('.text-attach-file').text(file.name);
        $khungSoanBaiViet.find('.cancel-attach-file').addClass('show');
    }
    $khungSoanBaiViet.addClass('show-post-button');
}
function huyDangTapTin() {
    $($khungSoanBaiViet.find('.attach-file')[0]).val('');
    $khungSoanBaiViet.find('.cancel-attach-file').removeClass('show');
    $khungSoanBaiViet.find('.text-attach-file').text("Thêm tập tin");
}